from selenium import webdriver
from selenium.webdriver.common.by import By

# TODO 属性定位
'''
css用#号表示id属性
css用.表示class属性
css直接用标签名称，无任何标示符，
'''
# 需求:使用css_selector通过id,class属性定位百度首页搜索框
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')

# 通过元素属性定位id
id = driver.find_element(By.CSS_SELECTOR, "#kw")
print(id.get_attribute("outerHTML"))

# 通过元素属性定位class
ipt = driver.find_element(By.CSS_SELECTOR, ".s_ipt")
print(ipt.get_attribute('outerHTML'))

# TODO 其他属性
# 需求:使用css_selector通过id,class属性定位百度首页搜索框
# 通过name定位
ipt = driver.find_element(By.CSS_SELECTOR, '[name="wd"]')
print(ipt.get_attribute('outerHTML'))

# 通过autocomplete定位
ipt = driver.find_element(By.CSS_SELECTOR, '[autocomplete="off"]')
print(ipt.get_attribute('outerHTML'))

# 通过type定位
ipt = driver.find_element(By.CSS_SELECTOR, '[type="submit"]')
print(ipt.get_attribute('outerHTML'))

# 通过通过标签与其他属性定位
ipt = driver.find_element(By.CSS_SELECTOR, "input#kw")
print(ipt.get_attribute('outerHTML'))

# TODO 层级关系
# 父子关系
ipt = driver.find_element(By.CSS_SELECTOR, 'form>span>input')
print(ipt.get_attribute('outerHTML'))

# TODO 索引
# 通过nth-child() 定位input
ipt = driver.find_element(By.CSS_SELECTOR, '#form input:nth-child(2)')
print(ipt.get_attribute('outerHTML'))

# TODO 逻辑运算
ipt = driver.find_element(By.CSS_SELECTOR, 'input[id="kw"][name="wd"]')
print(ipt.get_attribute('outerHTML'))
